Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

DirectX, Windows Media Foundation και ότι άλλο υπάρχει σχετικά για την χρήση με C# (managed code)!

Îåêßíçóå áðü ôï ìÝëïò akatran. Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 22-06-2011, 10:28. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  19-06-2011, 12:55 66333

    DirectX, Windows Media Foundation και ότι άλλο υπάρχει σχετικά για την χρήση με C# (managed code)!

    Καταρχήν γράφω στην ενότητα "Άλλα θέματα development" διότι δεν βρήκα άλλη κατηγορία που να σχετίζεται με το παρόν θέμα. Ίσως το θέμα θα έπρεπε να έχει την δικιά του θεματική ενότητα.

    Ο λόγος που γράφω εδώ είναι γιατί διαπιστώνω ότι παρά την εξέλιξη του Visual Studio και των τεχνολογιών που φέρνει κοντά του, σε κάποιους άλλους τομείς απομακρύνεται όλο και περισσότερο, όπως το directx. Ίσως να μην έχω καταλάβει σωστά το όλο θέμα εξ’ αρχής αλλά όσον αφορά την υποστήριξη του directx, δεν υπάρχει τρόπος να το δουλέψει κανείς μέσα από managed code και πρέπει να καταφύγει στην  λύση των  wrapper κλάσεων και για να δημιουργηθούν αυτές, φυσικά, θα πρέπει να παίξει με C++. Οι λύσεις αυτές υπάρχουν στο διαδίκτυο αλλά σχεδόν όλες έχουν εγκαταλειφτεί.

    Θα ήθελα, αν κάποιος γνωρίζει, να προτείνει με ποιο τρόπο μπορεί κάποιος να δουλέψει directx ή Windows Media Foundation σε managed γλώσσα όπως η C# ή VB.NET.

    Επίσης, ακόμα και με wrapper κλάσεις ως λύση, θα πρέπει να δοθεί κάποιο βάρος ώστε αυτές να διατηρούνται up to date και να ενημερώνονται. Κατόπιν τούτου είμαι διατεθειμένος να βοηθήσω προς αυτόν το σκοπό, όπως μπορώ αν και το επίπεδο μου σε C++ δεν είναι ικανοποιητικό για την ανάπτυξη τέτοιων εφαρμογών.

    Ελπίζω να μην κούρασα με το μέγεθος της ανάρτησης μου!

  •  19-06-2011, 23:34 66334 σε απάντηση της 66333

    Απ: DirectX, Windows Media Foundation και ότι άλλο υπάρχει σχετικά για την χρήση με C# (managed code)!

    Δυστυχώς δεν έχω καμιά "φρέσκια" λύση να σας προτείνω αλλά μπορώ να μοιραστώ κάποια εμπειρία που είχα αποκτήσει δουλεύωντας με XNA και SlimDX. Το XNA ήταν και είναι ο (υποτιθέμενος) αντικαταστάτης του Managed DX αλλά στην ουσία ήταν πιό πολύ ένας "εύκολος" τρόπος γιά δημιουργία παιγνιδιών σε windows και Xbox, παρά γιά ειδικευμένες εφαρμογές video audio κλπ και δεν έδινε άμεσα την δυνατότητα γία χρήση apis του DX.

    Το slimDX παρ' όλο που δεν αποτελεί τεχνολογία της microsoft είναι κατά την γνώμη μου μία πολύ καλή λύση γιά όποιον θέλει να χρησιμοποιήσει Directx μέσα από managed γλώσσες και δεν έχει εγκαταλειφτεί ακόμα, γιατί είναι το μόνο που υποστηρίζει 64 bit builds, framework 4 και directx 11 ενώ δυστυχώς το XNA παραμένει "κολλημένο" στο dx9.

    Links:

    XNA

    SlimDX

    SlimDX Features

  •  21-06-2011, 15:46 66345 σε απάντηση της 66333

    Απ: DirectX, Windows Media Foundation και ότι άλλο υπάρχει σχετικά για την χρήση με C# (managed code)!

    Εκτός από wrapper βιβλιοθήκες που ίσως ήδη έχεις βρει ( DirectShow.NET, Media Foundation.NET, Windows Media .NET ) δεν θυμάμαι άλλες παρόμοιες προσπάθειες.Υπάρχει το OpenTK,που δίνει wrappers για OpenGL,OpenCL,OpenAL,αλλά υποψιάζομαι ότι από το DirectX ενδιαφέρεσαι περισσότερο για το DirectShow,οπότε δε θα σε βοηθήσει πολύ.Αλλά δώσε μια ευκαιρία στα "εγκαταλελειμμένα" projects,το ότι δεν έχουν ανανεωθεί εδώ και 1-2 χρόνια δεν σημαίνει ότι δεν είναι χρησιμοποιήσιμα.
  •  21-06-2011, 21:24 66346 σε απάντηση της 66345

    Απ: DirectX, Windows Media Foundation και ότι άλλο υπάρχει σχετικά για την χρήση με C# (managed code)!

    Μάλλον έχετε παρεξηγήσει τί μπαίνει στο Framework και τί υποστηρίζεται ή δεν υποστηρίζεται. Το ότι κάτι δεν υπάρχει μέσα στο BCL δεν σημαίνει ότι δεν υποστηρίζεται από το .NET. Το Framework πρέπει να παρέχει την ίδια λειτουργικότητα σε όλες τις εκδόσεις λειτουργικών στις οποίες υποστηρίζεται. Τα DirectX 10 και 11 υποστηρίζονται ΜΟΝΟ σε Vista και Windows 7 αντίστοιχα. Συνεπώς δεν μπορεί να προστεθεί υποστήριξη γι αυτά στο ίδιο το .NET.

    Οι managed βιβλιοθήκες για το DirectX αλλά και άλλες τεχνολογίες των Vista και Windows 7 παρέχονται στο Windows 7 API Code Pack. Μάλιστα είναι πανεύκολο να το εγκαταστήσει κανείς στο Visual Studio 2010 καθώς υποστηρίζει το NuGet.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  22-06-2011, 09:58 66348 σε απάντηση της 66333

    Απ: DirectX, Windows Media Foundation και ότι άλλο υπάρχει σχετικά για την χρήση με C# (managed code)!

    Αν δεν κάνω λάθος μπορείς επίσης να κάνεις ότι θες όσον αφορά γραφικά και animation με WPF ή Silverlight, τα οποία υποστηρίζουν DirectX (GPU) acceleration εκ κατασκευής. Έτσι νομίζω γίνονται και τα παιχνίδια για Windows Phone 7 (σωστά?). Προσωπικά δεν έχω πολύ εμπειρία.
    Για βίντεο ο managed κώδικας είναι OK. Για Direct3D animation που θέλει συνήθως ακρίβεια και ταχύτητα, θα παρέμενα στην C++. Και αν θέλει κανείς να συνεισφέρει σε project όπως το SlimDX, καλό θα ήταν να ξέρει πρώτα τι ποιεί το DirectX στα βάθη του μαγευτικού native κώδικα.
    Το θέμα είναι τι θες από την εφαρμογή σου. Αν θες ωμό performance κάπου στο site του slimDX διάβασα ότι μπορεί να χάνει περίπου 3-5% σε σχέση με native DirectX.

    Ένα άλλο καλό forum για DirectX/OpenGL, κλπ. είναι το www.gamedev.net


    Panagiotis Georgiadis
    HBM Netherlands B.V.
    www.twitter.com/HimWithCurls
  •  22-06-2011, 10:28 66349 σε απάντηση της 66348

    Απ: DirectX, Windows Media Foundation και ότι άλλο υπάρχει σχετικά για την χρήση με C# (managed code)!

    Η συζήτηση για WPF και DirectX είναι σαν τη συζήτηση για .NET ή assembly. Αν μιλάς για το δεύτερο, μάλλον ψάχνεις για πράγματα που δεν σου δίνει το πρώτο ούτε κατά προσέγγιση. Εξάλλου η καθυστέρηση δεν είναι ένα απλό 3-5% καθώς με C++ και DirectX μπορείς να κάνεις πράγματα που απλά δεν γίνονται με το .NET ή το WPF. Εκεί μιλάμε για τάξεις μεγέθους στην διαφορά ταχύτητας.

    Ένα από αυτά που δεν γίνονται και δεν έχει νόημα να γίνουν είναι η εκμετάλλευση των SSE εντολών των επεξεργαστών για ταυτόχρονη επεξεργασία όγκου δεδομένων. Απλά και μόνο το marshalling μεταξύ managed και unmanaged κώδικα είναι τόσο μεγάλο ώστε να καταργεί οποιοδήποτε όφελος. Το ίδιο ισχύει και για την εκμετάλλευση των GPU για επεξεργασία. Μιλάμε για παράλληλη επεξεργασία σε επίπεδο ενός επεξεργαστή και thread, ούτε καν για multicore ή έστω και multithreaded κώδικα. Όταν έχεις να επεξεργαστείς 5Μ pixels (για παράδειγμα) 80 φορές το δευτερόλεπτο, για ώρες, το marshalling είναι εντελώς περιττό και απαράδεκτο.

    Αυτός είναι και ο λόγος που η Microsoft έβγαλε το Microsoft C++ AMP library για τη χρήση των GPU αλλά δεν πρόκειται να το βγάλει για .NET. 



    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems